查看原文
其他

人群数量估计领域研究进展

2016-07-18 张营营 深度学习大讲堂
点击上方“公众号”可订阅哦!
深度学习大讲堂是高质量原创内容的平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息!

摘要

本文回顾了人群计数领域近几年的进展,主要从视频监控的人群计数算法、单张图像人群计数算法以及基于深度学习的人群计数算法出发,介绍不同人群计数系统的结构流程,并且简单分析了该领域今后的发展趋势。
引言

在各大城市中,随着居住人口密度的增长,人群大量聚集的行为越来越多,且规模越来越大。虽然在城市的每个角落几乎都装有摄像设备,但目前人群的聚集仍然缺乏有效的管理和控制。因此,人群计数(Crowd Counting)或者人群密度估计(Crowd Density Estimation)成为安防领域不可或缺的研究课题。最近几年,无论是监控视频还是单张图像的人群计数算法性能都得到很大的提升,当然“万能”的深度学习(Deep Learning)在该领域也表现出极其优越的性能。

首先,让我们对人群计数问题有一个直观的感受,即它到底干了一件什么事?

图1.  UCSD数据


图1. 是一段监控视频中的两帧画面,相信你会很容易地数出这两张图中分别有18和11个人,这就是人群计数问题。对于上面两张图我们还可以轻易数出人数,但是对于类似于图2. 的场景,你还有耐心数下去吗?显然不会!那么这个任务就需要交给计算机自动地去完成。解决人群计数问题的传统的做法是手动设计并提取各种特征(Hand-crafted Features),然后再基于这些特征训练一个线性或非线性函数来回归人头数。
图2. UCF_CC_50数据集(左)和ShanghaiTech数据集(右)
深度学习算法——卷积神经网络(Convolution Neural Network(CNN))使得整个网络同时完成特征提取和回归任务,从而实现端对端的训练(End-to-end Training)。本文主要回顾近几年人群计数领域的发展及深度学习在该领域的应用,接下来文章主要分为三个部分:
1)监控视频中人群计数算法。
2)单张图像人群计数算法。
3)基于深度学习的人群计数算法。
监控视频中人群计数算法

视频相对于离散的图像而言包含运动的信息,因此大多数基于视频的人群计数算法一般分为三个步骤: 1)前景分割;2)特征提取;3)人数回归。接下来将对这三个步骤分别做详细的介绍。
1)、前景分割前景(人群)分割的目的是将人群从图像中分割出来便于后面的特征提取,分割性能的好坏直接关系的最终的计数精度,因此这是限制传统算法性能的一个重要因素。常用的分割算法有:光流法(Optical Flow)、混合动态纹理(Mixture of Dynamic Textures)、小波分析(Wavelets) 等。这种基于运动信息的前景分割算法的缺点非常明显:如果视频中的人站着不动,那么就会把静止不动的人分为背景,从而影响人群计数的性能。
2)、特征提取在完成前景分割之后,紧接着就是从分割得到的前景(人群)提取各种不同的低层特征(Low-level Features),常用的特征有:人群面积和周长(Area and Perimeter of Crowd Mask)、边的数量(Edge Count)、边的方向(Edge Orientation)、纹理特征(Texture Features)、闵可夫斯基维度(Minkowski Dimension)等。
3)、人数回归该步骤的目的是将上一步提取到的特征回归到图像中的人数,回归可以是简单的线性回归,也可以用复杂的非线性回归。常用的回归方法有:线性回归(Linear Regression)、分段线性回归(Piece-wise Linear Regression)、脊回归(Ridge Regression)、高斯过程回归(Gaussian Process Regression)等。 接下来让我们通过发表于CVPR08的一篇代表性论文Privacy Preserving Crowd Monitoring: Counting People without People Models or Tracking. 来详细了解整个算法流程。图3. 展示了一个经典的视频人群计数系统:首先采用混合动态纹理的方法将运动的人群分割出来。
图3.人群计数系统流程图

由于视角原因,靠近摄像头的人要比远离摄像头的人在图像中占更多的像素,作者给人群引入了视角归一化 (Perspective Normalization),具体操作如图4.所示:
图4. Perspective map

标定一个地平面(Ground Plane),测量在
上的人在图像中的高度,以及在上人的高度。分别给上的像素乘以权重,中间的像素的权重通过这两条线之间的线性插值得到。接下来在归一化后的人群块(Crowd Blob)上提取多种特征(面积,周长,边缘方向,纹理)。最后采用高斯过程回归将提取的特征回归到图像中人群数量。
平均绝对误差(MAE)和均方误差(MSE)是常用的衡量算法性能的标准,前者表征算法的准确性,后者表征算法的稳定性,二者的定义如下式:

其中是测试的图片数量(视频帧数)是第张图片实际人数是算法估计的人数。
单张图像人群计数算法

对于单张图像而言没有运动信息,那么人群分割就显得非常困难,因此此类算法一般直接从整张图像或者其子区域提取特征,然后再计算图像中人群数量。发表于CVPR2013的论文Multi-Source Multi-Scale Counting in Extremely Dense Crowd Images提出了一种使用多源信息(Multiple Sources of Information)估计单张具有非常密集人群的图像的人数的方法。作者首先把一张图片分成很多较小的区域如图5.所示:
图5.图像区域分割

然后对每个区域从三种不同而互补的源进行人数估计,最终这张图像的人数是每个区域的人数之和。这三种源分别是:1)基于HOG的人头检测(HOG based Head Detections);2)傅里叶分析(Fourier Analysis);3)基于兴趣点的计数(Interest Points based Counting)。最终每个区域的人数由以上三个源综合得到。由于实际图像相邻区域的人数差别不是很大,作者采用马尔可夫随机场(Markov Random Field)使得估计得到的相邻区域的人数比较光滑。图6.显示了MRF前后每个区域人数的区别。
图6.MRF前后区域人数对比

基于深度学习的人群计数算法

在监控视频的人群计数算法中,前景分割是不可或缺的步骤,然而前景分割本事就是一个比较困难的任务,算法性能很大程度地受其影响。卷积神经网络实现了端对端训练,无需进行前景分割以及人为地设计和提取特征,经过多层卷积之后得到的高层特征(High-level Features)使得算法性能更加优秀。发表于CVPR2015的论文Cross-scene Crowd Counting via Deep Convolutional Neural Networks提出了一个适用人群计数的卷积神经网络模型如图7.所示:
图7.人群计数卷积神经网络结构图

该网络以图像中72 x 72的图像块 (Patch)作为输入,交替回归该图像块的人群密度和人群总数,相应的损失函数定义如下式:
在训练好一个模型后,用与测试数据(和训练数据的场景不同)视角类似的训练图像块(Image Patch)对已经训练好的模型进行微调(Finetune),从而达到跨场景(Cross-scene)人群计数的目的,具体流程见图8.。
图8.跨场景人群计数流程图

最后简单介绍下我们最近关于单张图像人群计数的工作:Single-Image Crowd Counting via Multi-Column Convolutional Neural Network,该工作发表于 CVPR 2016. 为了能够更好地抓取图像中不同大小人头的特征,我们提出了适用于人群计数的多列卷积神经模型(MCNN)如图9.所示。该网络的每一列子网络深度相同,但是滤波器的大小(Filter Size)不同(大,中,小),因此每一列子网络的感知域(Receptive Field)不同,能够抓住不同大小人头的特征,最后将三列子网络的特征图(Feature Map)做线性加权(由1x1的卷积完成)得到该图像的人群密度图。由于我们的网络没有使用全连接层(Full-connected Layer),是全卷积网络(FCN),因此参数很少,训练起来很快。此外,使用FCN的另外一个好处是输入图像可以是任意大小,从而避免了因调整图像大小(Resize)产生的图像扭曲(Image Distortion)对算法性能的影响。
图9.多列卷积神经网络结构图

另一方面,为了使得密度图能够更好地与不同视角(不同人头大小)且人群很密的图像对应起来,我们对传统的基于高斯核(Gaussian Kernel)的密度图做了改进,提出了基于几何适应高斯核(Geometry-adaptive Kernels)的密度图,由下式表示:
其中是图像中人头位置的冲击函数,是人头在图像中的位置,为图像中人头的总数,为距离人头最近个人头与该人头的平均距离(在人群较密的情况下近似等于人头大小)。这样生成的密度图在人头小/大的位置高斯核的方差小/大(较集中/分散),能够更好地表征人头大小的特征。我们采用优化欧式损失(Euclidean Loss)的方式让网络输出的密度图回归到标准的密度图,损失函数如下式:

其中是待优化参数,是训练样本数量,是输入图像,是对应的密度图。而且我们通过实验证实,密度图已经同时包含空间密度信息和人数(密度图求和)信息,交替回归密度图和总人数相对于直接回归密度图没有性能提升。


我们的方法在除了UCF_CC_50(训练图片数量太少,难以满足深度学习的需求)以外的常用人群计数数据集上均取得最好的性能(State-of-the-art Performance):



总结与展望

以上简单介绍了传统的视频和图像人群计数算法以及基于深度学习的人群计数算法,深度学习算法由于能够方便高效地提取高层特征而获得优越的性能是传统方法无法比拟的,因此今后高性能的人群计数算法很大程度上会采用深度学习的方法。当然,传统基于运动信息人群分割的算法也有自己的一个优点,就是能够统计视频中不同方向人流的人数,这是以单张图片作为输入的卷积神经网络很难实现的。

该文章属于“深度学习大讲堂”原创,如需要转载,请联系loveholicguoguo。
作者简介:
 

往期精彩回顾
深度学习在计算机视觉领域成功的启示与开放问题讨论
CVPR 2016论文快讯:目标检测领域的新进展
CVPR2016 论文快讯:人脸专题
深度学习你不可不知的技巧(上)
深度学习你不可不知的技巧(下)
【机器人的双眸】视觉SLAM导论
 
  
欢迎关注我们!
深度学习大讲堂是高质量原创内容的平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息!
深度学习大讲堂

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存